package com.filldream.fastboot.common.okutil.stock.cf.comment.dto;

import cn.hutool.core.date.DateUtil;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

/**
 * 东方财富网-股吧网页版-股评
 */
@Data
public class CfComment {

    /**
     * 股评-个股名称
     **/
    private String stockName;

    /**
     * 股评-标签主题
     **/
    private String theme;

    /**
     * 股评-股评ID
     **/
    private Long post_id;

    /**
     * 股评-内容
     **/
    private String post_content;

    /**
     * 股评-标题
     **/
    private String post_title;

    /**
     * 股评-时间
     **/
    private String post_publish_time;

    /**
     * 股评-回复列表
     **/
    private List<CfCommentReply> reply_list;

    /**
     * 股评-配图列表
     **/
    private List<String> post_pic_url;

    /**
     * 股评-点击数量-阅读数量
     **/
    private Integer post_click_count;

    /**
     * 股评-回复数量
     **/
    private Integer post_comment_count;

    /**
     * 股评-股评人
     **/
    private CfCommentPostUser post_user;

    /**
     * 类型 1-东财 2-同花顺 3-财联社电报
     **/
    private Integer channelType;

    private String searchCode;

    /**
     * 获取控制台的输出文案
     *
     * @return
     */
    public String obtainPrintContent() {
        //1、主题开头，但不等于主题的，则替换掉主题 2、主题开头的，等于主题的，则返回主题
        String keyStr = post_content.startsWith(theme) && !post_content.equals(theme) ? post_content.replaceFirst(Pattern.quote(theme), "") : post_content;
        //2、拼接标题和内容
        String simpleContent = StringUtils.isBlank(post_title) ? keyStr : "《" + post_title + "》" + keyStr;
        //3、拼接时间
        int compare = DateUtil.compare(DateUtil.parseDate(post_publish_time), DateUtil.beginOfDay(new Date()));
        String sendTime = post_publish_time.substring(compare >= 0 ? 11 : 5);
        return "\r\n"
                + sendTime + "  "
                + stockName + ":"
                + simpleContent
                + " [" + post_user.getUser_nickname() + "-" + post_user.getUser_age() + "]"
                + "\r";
    }

    /**
     * 获取网页版的输出文案
     *
     * @return
     */
    public String getShowContent() {
        //1、主题开头，但不等于主题的，则替换掉主题 2、主题开头的，等于主题的，则返回主题
        String keyStr = post_content.startsWith(theme) && !post_content.equals(theme) ? post_content.replaceFirst(Pattern.quote(theme), "") : post_content;
        //2、拼接标题和内容
        return StringUtils.isBlank(post_title) ? keyStr : "《" + post_title + "》" + keyStr;
    }

    public List<CfCommentReply> obtainRealReplyList() {
        this.reply_list = reply_list.stream()
                .filter(item -> StringUtils.isNotBlank(item.getReply_text())) // 过滤为空的回复
                .collect(Collectors.toMap(CfCommentReply::getReply_id, item -> item, (existing, replacement) -> existing))// 按回复ID去重
                .values()
                .stream()
                .sorted(Comparator.comparing(CfCommentReply::getReply_time)) // 按照时间升序排序
                .collect(Collectors.toList());
        return this.reply_list;
    }

    public String getChannelName() {
        if (channelType != null) {
            if (channelType.equals(1)) {
                return "东方财富";
            } else if (channelType.equals(2)) {
                return "同花顺";
            } else if (channelType.equals(3)) {
                return "财联社电报";
            } else if (channelType.equals(4)) {
                return "财联社头条";
            } else if (channelType.equals(5)) {
                return "财联社板块";
            }
        }
        return "未知平台";
    }

}
